// 对axios进行二次的封装(实例化axios对象,设置请求拦截器,设置响应拦截器)

import axios from 'axios'
// 在开发环境下,process.env.REACT_APP_BASE_URL会自动找变量.
// 在生产环境下,process.env.REACT_APP_BASE_URL会自动找变量.
// 开发环境下代理文件setupProxy.js会生效,跨域问题会通过代理的请求转发解决
// 生产环境下(服务器环境)代理文件setupProxy.js不存在了,代理也就不生效了,之后的跨域问题只能让后端在服务器中解决
// 注意:更改服务器的设置都要重新启用服务器比如setupProxy.js文件,和基准路径
//       一旦路径出现问题:在网络插件中寻找问题
var myaxios = axios.create({
    // baseURl:'/api'
    baseURL: process.env.REACT_APP_BASE_URL,//基准路径
    timeout: 10 * 1000//超过时间
})
// 设置请求拦截器
myaxios.interceptors.request.use(
    (config) => {
        //一般情况下,在这里设置请求头( 这些请求头应该是服务端必须要求携带的 )
        //config.headers['Authorization'] = "Bearer" + " " + localStorage.getItem('token');
        config.headers.Authorization = "Bearer" + " " + localStorage.getItem('token')
        return config
    },
    (err) => {
        return Promise.reject(err)
    }
)
// 设置响应拦截器
myaxios.interceptors.response.use(
    (res) => {
        return res
    },
    (err) => {
        if (err.response.status == 401) {
            alert("身份验证失败")
        }
        else if (err.response.status == 404) {
            alert('访问路径有误')
        }
        else if (err.response.status == 500) {
            alert('服务器内部错误')
        }
        return Promise.reject(err)
    }
)
export default myaxios